package lock;

import java.util.concurrent.locks.LockSupport;

public class LockSupportDemo {


    public static void main(String[] args) {

        Thread t1=new Thread(()->{
            System.out.println(Thread.currentThread().getName()+"\t"+"coming....");
            LockSupport.park();//本线程A挂起
            /*
            如果这里有两个LockSupport.park(),因为permit的值为1,上一行已经使用了permit
            所以下一行被注释的打开会导致程序处于一直等待的状态
            * */
            System.out.println("挂起后这段代码不会执行");
            System.out.println("unpark唤醒后才会执行");

        },"A");
        t1.start();

        Thread t2=new Thread(()->{
            System.out.println(Thread.currentThread().getName()+"\t"+"唤醒A线程");
            //有两个LockSupport.unpark(t1),由于permit的值最大为1,所以只能给park一个通行证
            LockSupport.unpark(t1);
        },"B");
        t2.start();
    }
}
